Skip to content

fix: normalize missing args for stdio MCP connections (closes #39)#42

Closed
omatheusmesmo wants to merge 1 commit intojobrunr:mainfrom
omatheusmesmo:fix/issue-39-mcp-startup-crash
Closed

fix: normalize missing args for stdio MCP connections (closes #39)#42
omatheusmesmo wants to merge 1 commit intojobrunr:mainfrom
omatheusmesmo:fix/issue-39-mcp-startup-crash

Conversation

@omatheusmesmo
Copy link
Copy Markdown

@omatheusmesmo omatheusmesmo commented Mar 30, 2026

Normalize missing 'args' for stdio MCP connections so autoconfiguration doesn't receive null. Adds ApplicationContextInitializer registered via META-INF/spring.factories and tests.\n\nBoot repro: verified app passes StdioTransportAutoConfiguration; subsequent failure is expected when command is invalid.\n\nSee commit 0cdd20f.

Fixes #39

)

StdioTransportAutoConfiguration throws 'The args can not be null' when a
stdio MCP server is saved to application.yaml without an explicit args
list (e.g. when McpTool.addStdioMcpServer is called with blank args).

McpStdioArgsNormalizerApplicationContextInitializer runs as an
ApplicationContextInitializer before autoconfiguration, scans property
sources for stdio connections that have a command but no args, and
injects an empty args list so the binder never sees null.
@cla-bot
Copy link
Copy Markdown

cla-bot bot commented Mar 30, 2026

We require contributors to sign our Contributor License Agreement, and we don't have @omatheusmesmo on file. In order for us to review and merge your code, please create a PR where you add yourself to the contributors of JobRunr. This only needs to be done once. As soon as that is done, we can review your PR.

Thanks a lot!

@omatheusmesmo
Copy link
Copy Markdown
Author

We require contributors to sign our Contributor License Agreement, and we don't have @omatheusmesmo on file. In order for us to review and merge your code, please create a PR where you add yourself to the contributors of JobRunr. This only needs to be done once. As soon as that is done, we can review your PR.

Thanks a lot!

Pr opened.
jobrunr/clabot-config#78

@rdehuyss
Copy link
Copy Markdown
Contributor

Hi @omatheusmesmo ! Thanks for the PR but after further investigation, I found out that the stdio MCP Server was added wrongly.

Instead of this (which was now being generated):

    mcp:
      client:
        stdio:
          connections:
            brave-search:
              command: npx -y @modelcontextprotocol/server-brave-search

It should have been (this is what spring expects):

    mcp:
      client:
        stdio:
          connections:
            brave-search:
              command: npx
              args:
                - -y
                - '@modelcontextprotocol/server-brave-search'
              env:
                BRAVE_API_KEY: <api-key>

I've created PR #44 which validates the arguments now.

@rdehuyss rdehuyss closed this Mar 30, 2026
@omatheusmesmo
Copy link
Copy Markdown
Author

Hi @omatheusmesmo ! Thanks for the PR but after further investigation, I found out that the stdio MCP Server was added wrongly.

Instead of this (which was now being generated):

    mcp:
      client:
        stdio:
          connections:
            brave-search:
              command: npx -y @modelcontextprotocol/server-brave-search

It should have been (this is what spring expects):

    mcp:
      client:
        stdio:
          connections:
            brave-search:
              command: npx
              args:
                - -y
                - '@modelcontextprotocol/server-brave-search'
              env:
                BRAVE_API_KEY: <api-key>

I've created PR #44 which validates the arguments now.

Thanks for answering, I will take a look on the new issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

NullPointer at start after addition of some MCP-Server

2 participants